#ifndef MODBUSTCP_H
#define MODBUSTCP_H


#include <QCoreApplication>
#include <QModbusServer>
#include <QModbusDataUnit>
#include <QDebug>
#include <QTimer>
#include <cstdlib> // for rand() and srand()
#include <ctime>   // for time()

class ModbusTCP
{
public:
    ModbusTCP();

    //Q_SLOTS宏用来声明Qt槽
private Q_SLOTS:
    void onConnectButtonClicked();
    void onStateChanged(int state);

    void coilChanged(int id);
    void discreteInputChanged(int id);
    void bitChanged(int id, QModbusDataUnit::RegisterType table, bool value);

    void setRegister(const QString &value);
    void updateWidgets(QModbusDataUnit::RegisterType table, int address, int size);

    void onCurrentConnectTypeChanged(int);

    void handleDeviceError(QModbusDevice::Error newError);

//定义了初始化，配置容器以及容器中各个主要部件的私有成员
private:
    void initActions();
    void setupDeviceData();
    void setupWidgetContainers();


    QModbusServer *mQModbusServer = nullptr;
    //这里用到了Qt的容器类之一QHash，后面还会用到另一个QMap
    //这两个容器都是用来生成键值对，QHash的效率高于QMap


};

#endif // MODBUSTCP_H
